package xin.xihc.jba.core.bean;

import org.springframework.jdbc.core.namedparam.MapSqlParameterSource;

import java.sql.Types;
import java.util.Map;

/**
 * 增加对java枚举类型的支持
 * 不支持自动序列化成Json字符串，需手动转换使用（JsonUtil.toNoNullJsonStr(xxx,xxx)）
 *
 * @author Leo.Xi
 * @date 2018年5月2日
 */
public class JbaMapSqlSource extends MapSqlParameterSource {

    public JbaMapSqlSource(Map<String, ?> values) {
        super(values);
    }

    @Override
    public int getSqlType(String paramName) {
        int sqlType = super.getSqlType(paramName);
        if (sqlType == TYPE_UNKNOWN && hasValue(paramName)) {
            if (null != getValue(paramName) && getValue(paramName).getClass().isEnum()) {
                sqlType = Types.VARCHAR;
                this.registerSqlType(paramName, sqlType);
            }
        }
        return sqlType;
    }

}
